import sqlite3 from 'sqlite3';
import { app, BrowserWindow ,ipcMain} from 'electron';
import path from 'path';

// 定义环境变量类型
type NODE_ENV = 'development' | 'production';

// 获取环境变量
const NODE_ENV: NODE_ENV = process.env.NODE_ENV as NODE_ENV || 'development';
console.log(__dirname);
// 数据库路径
let DB_PATH = path.join(__dirname, './imsql.db');

// 日志输出
console.log('连接数据库路径：', app.getAppPath());
console.log('连接数据库路径：', DB_PATH);

// 判断是否是正式环境
if (app.isPackaged) {
  // 正式环境
  DB_PATH = path.join(path.dirname(app.getPath('exe')), './imsql.db');
}

// 连接数据库
function connectDatabase(): sqlite3.Database {
  return new sqlite3.Database(DB_PATH, (err) => {
    if (err) {
      console.error('连接数据库错误：' + err.message);
    }
    console.log('连接数据库成功');
  });
}

const db = connectDatabase();

ipcMain.handle('getUserInfo', (event, params) => {
  console.log(params.id)
  return new Promise((resolve, reject) => {
    let id = params.id
    let sql = 'SELECT * FROM user WHERE id = ?';
    db.get(sql,[id], (err, result) => {
      if (err) {
        reject(err);
      } else {
        resolve(result);
      }
    })
  })
})

// 创建数据库表
function createDataTable() {
   db.serialize(()=>{
     db.run('create table if not exists user (id INTEGER PRIMARY KEY AUTOINCREMENT,name text,email text)');
   })

   setTimeout(()=>{
    let stmt = db.prepare("insert into user (name,email) values (?,?)")
     let data = [['123213','232323'],['123213','232323'],['123213','232323']]
     db.serialize(()=>{
       //开始事务
       db.run('begin transaction;',(err)=>{
         if(err){
           return console.log(err.message);
         }
        // 批量插入
         data.forEach(user =>{
           stmt.run(user,(err)=>{
             if (err) {
               return console.error(err.message);
             }
             console.log("添加成功")
           })
         });
         stmt.finalize((err)=>{
           if(err){
             return console.error(err.message);
           }
           db.run('end transaction;',(err)=>{
             if(err){
               return console.error(err.message);
             }
             console.log("事务结束")
           })
         })
       })


     })
   })

  // 注意：通常不建议在这里关闭数据库连接，除非你确定之后不再需要它
  // db.close();
}

// 导出模块
export { connectDatabase, createDataTable, db as database };
